/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package service;

import model.Usuario;
import dao.UsuarioDAO;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.FabricaDeObjetos;
import util.JPAUtil;

/**
 *
 * @author visitante
 */
public class UsuarioService {

    private static UsuarioDAO usuarioDAO;

    static {
        try {
            // Passar a classe da interface AlunoDisciplinaDAO!
            usuarioDAO = (UsuarioDAO) FabricaDeObjetos.getObjetoUnico(UsuarioDAO.class);
        } catch (Exception ex) {
            Logger.getLogger(UsuarioService.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public List<Usuario> getPorNome(String nome) {
        List<Usuario> listaUsuario = usuarioDAO.getPorNome(nome);
        return listaUsuario;
    }

    public boolean inserirUsuario(Usuario usuarioCorrente) {
        if (usuarioDAO.getPorMatricula(usuarioCorrente.getMatricula()) != null) {
            JPAUtil.beginTransaction();
            usuarioDAO.persist(usuarioCorrente);
            JPAUtil.commitTransaction();
            return true; 
        }
        return false;
    }

    public Usuario getPorMatricula(String matricula) {
        return usuarioDAO.getPorMatricula(matricula);
    }

    public List<Usuario> listarUsuario() {
        List<Usuario> listaUsuario = usuarioDAO.getAll();
        return listaUsuario;
    }

    public String removerUsuario(Usuario usuarioCorrente) {
        JPAUtil.beginTransaction();
        usuarioDAO.remove(usuarioCorrente);
        JPAUtil.commitTransaction();
        return "remocaoconcluida";
    }

    public void editarUsuario(Usuario usuario) {
        JPAUtil.beginTransaction();
        usuarioDAO.merge(usuario);
        JPAUtil.commitTransaction();
    }
}
